package cn.com.anypay.manager.common.validation;

import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.*;

/**
 * 商户ID格式验证注解
 * 验证商户ID是否符合业务规则：8-32位大写字母和数字，且不能以数字开头
 */
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = MerchantIdFormatValidator.class)
public @interface MerchantIdFormat {

    String message() default "商户ID格式错误：必须是8-32位字符，由大写字母和数字组成，且不能以数字开头";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * 允许的最小长度
     */
    int minLength() default 8;

    /**
     * 允许的最大长度
     */
    int maxLength() default 32;

    /**
     * 是否允许以数字开头
     */
    boolean allowStartWithDigit() default false;
}